iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Python

進擊的Python系列 第 15

Day14-讀取與儲存文字檔案(九大巨人)

  • 分享至 

  • xImage
  •  

九大巨人

https://ithelp.ithome.com.tw/upload/images/20240826/20163257hPbRfXOBZf.jpg
圖片來源:《進擊的巨人》九大巨人能力及擁有者分析 戰鎚名過其實始祖最屈

Python讀取與儲存文字檔案

1.開啟檔案

基本語法

with open('filename.txt', 'mode') as file:
    # 在這裡進行檔案操作
filename.txt 要開啟的檔案名稱
mode 開啟模式
r 讀取(預設)
w 寫入(覆蓋原有內容)
a 追加(在檔案末尾追加內容)
x 創建新檔案,若檔案已存在則報錯

2.讀取檔案

逐行讀取

with open('my_file.txt', 'r') as file:
    for line in file:
        print(line.strip())  # 去除行尾的換行符

一次性讀取全部內容

with open('my_file.txt', 'r') as file:
    contents = file.read()
    print(contents)

3.寫入檔案

寫入文字

with open('new_file.txt', 'w') as file:
    file.write('Hello, world!\n')
    file.write('This is a new line.')

寫入列表

my_list = ['apple', 'banana', 'orange']
with open('fruits.txt', 'w') as file:
    for fruit in my_list:
        file.write(fruit + '\n')

4.處理編碼

指定編碼

with open('utf8_file.txt', 'r', encoding='utf-8') as file:
    # ...

常見的編碼有 UTF-8GBKBig5

5.其他常見操作

檢查檔案是否存在

import os
if os.path.exists('my_file.txt'):
    # 檔案存在

獲取檔案大小

import os
file_size = os.path.getsize('my_file.txt')
print(file_size)

逐行讀取 CSV 檔案

import csv

with open('data.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)

將字典寫入 JSON 檔案

import json

data = {'name': 'Alice', 'age': 30}
with open('data.json', 'w') as jsonfile:
    json.dump(data, jsonfile)

小技巧

  • 使用 with 語句:自動關閉檔案,避免資源洩漏
  • 指定編碼:處理不同編碼的文字檔案
  • 使用 csv 模組:處理 CSV 格式的檔案
  • 使用 json 模組:處理 JSON 格式的檔案
  • 考慮使用pandas:對於大規模數據分析,Pandas 提供了更強大的功能

更多進階用法

  • 上下文管理器:自定義上下文管理器,實現更複雜的檔案操作
  • 檔案路徑:使用 os 模組處理檔案路徑
  • 異常處理:處理檔案操作過程中可能發生的異常

結論

Python 提供豐富的工具來處理文字檔案,選擇合適的方法可以大大提高開發效率。介紹常見的檔案操作方式,能幫助更好地掌握 Python 的檔案處理功能

吉克以前很帥呢!

https://ithelp.ithome.com.tw/upload/images/20240826/20163257BX60FI7640.jpg
圖片來源:(https://forum.gamer.com.tw/C.php?bsn=43473&snA=13340)

請多指教囉!波爾柯你這什麼表情

https://ithelp.ithome.com.tw/upload/images/20240826/20163257E3ZxYwhMdn.png
https://ithelp.ithome.com.tw/upload/images/20240826/20163257MyfuH2uRYI.png
https://ithelp.ithome.com.tw/upload/images/20240826/20163257hzDuVqpXyv.png
圖片來源:(https://www.dcard.tw/f/attack_on_titan/p/238129021)


上一篇
Day14-生成器(萊納)
下一篇
Day15-網路爬蟲(希斯特莉亞)
系列文
進擊的Python36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言